package com.zp.drug.api.bo;

import com.zp.common.core.entity.BaseEntity;
import com.zp.common.core.validate.AddGroup;
import com.zp.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.util.List;

/**
 * 药品字典基本信息业务对象
 *
 * @author zhang peng
 * @ date 2023-06-03
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class DrugInfoBo extends BaseEntity {

    /**
     * 主键
     */
//                @NotBlank(message = "主键不能为空" , groups = { EditGroup.class })
    private String id;

    /**
     * 药品字典ID
     */
    private String drugId;

    /**
     * 药品类别
     */
    private String drugType;

    /**
     * 药品类型名称
     */
    private String drugTypeName;

    /**
     * 剂型
     */
    private String drugFrom;

    /**
     * 药品剂型名称
     */
//    @NotBlank(message = "药品剂型名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String drugFromName;

    /**
     * 药品分类（西药，中成药，中草药）
     */
//    @NotBlank(message = "药品分类（西药，中成药，中草药）不能为空", groups = {AddGroup.class, EditGroup.class})
    private String drugClass;

    /**
     * 药品分类名称
     */
//    @NotBlank(message = "药品分类名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String drugClassName;

    /**
     * 药品名称
     */
    @NotBlank(message = "药品名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String drugName;

    /**
     * 药品拼音码
     */
//    @NotBlank(message = "药品拼音码不能为空", groups = {AddGroup.class, EditGroup.class})
    private String drugInput;

    /**
     * 药品编码（机构）
     */
//    @NotBlank(message = "药品编码（机构）不能为空", groups = {AddGroup.class, EditGroup.class})
    private String drugCode;

    /**
     * 药监本位码
     */
    private String drugStandardCode;

    /**
     * 药品编码（系统）
     */
//    @NotBlank(message = "药品编码（系统）不能为空", groups = {AddGroup.class, EditGroup.class})
    private String sysDrugCode;

    /**
     * 毒理分类（普通药品，麻，毒，精一，精二）
     */
    private String toxiProperty;

    /**
     * 毒理分类名称
     */
    private String toxiPropertyName;

    /**
     * 限制等级（非限制，限制，特殊）
     */
    private String limitClass;

    /**
     * 限制等级名称
     */
    private String limitClassName;

    /**
     * 条形码
     */
    private String barCode;

    /**
     * 规格（含量）
     */
//    @NotBlank(message = "规格（含量）不能为空", groups = {AddGroup.class, EditGroup.class})
    private String spec;

    /**
     * 包装规格
     */
//    @NotBlank(message = "包装规格不能为空", groups = {AddGroup.class, EditGroup.class})
    private String packageSpec;

    /**
     * 包装单位
     */
//    @NotBlank(message = "包装单位不能为空", groups = {AddGroup.class, EditGroup.class})
    private String packageUnits;

    /**
     * 包装单位名称
     */
//    @NotBlank(message = "包装单位名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String packageUnitName;

    /**
     * 采购供应商
     */
    private String supplierId;

    /**
     * 供应商名称
     */
    private String supplierName;

    /**
     * 厂家标识
     */
    private String firmId;

    /**
     * 厂商名称
     */
    private String firmName;

    /**
     * 最小单位规格
     */
//    @NotBlank(message = "最小单位规格不能为空", groups = {AddGroup.class, EditGroup.class})
    private String minSpec;

    /**
     * 最小单位
     */
//    @NotBlank(message = "最小单位不能为空", groups = {AddGroup.class, EditGroup.class})
    private String minUnits;

    /**
     * 最小单位名称
     */
//    @NotBlank(message = "最小单位名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String minUnitsName;

    /**
     * 包装数量
     */
//    @NotNull(message = "包装数量不能为空", groups = {AddGroup.class, EditGroup.class})
    private Integer packageNum;

    /**
     * 拆分系数
     */
//    @NotNull(message = "拆分系数不能为空", groups = {AddGroup.class, EditGroup.class})
    private Integer splitNum;

    /**
     * 剂量
     */
//    @NotNull(message = "剂量不能为空", groups = {AddGroup.class, EditGroup.class})
    private BigDecimal dose;

    /**
     * 剂量单位
     */
//    @NotBlank(message = "剂量单位不能为空", groups = {AddGroup.class, EditGroup.class})
    private String doseUnits;

    /**
     * 剂量单位名称
     */
//    @NotBlank(message = "剂量单位名称不能为空", groups = {AddGroup.class, EditGroup.class})
    private String doseUnitsName;

    /**
     * 默认途径
     */
    private String channel;

    /**
     * 默认频次
     */
    private String performFreq;

    /**
     * 批准文号
     */
//    @NotBlank(message = "批准文号不能为空", groups = {AddGroup.class, EditGroup.class})
    private String passNo;

    /**
     * OTC类型  N-否，Y-是
     */
    private String isOtc;

    /**
     * GMP标识 N-否，Y-是
     */
    private String gmp;

    /**
     * 基本药物类型（0：国家目录，1：省级目录:2：目录外）
     */
    private String basicDrugType;

    /**
     * 抗菌药物 N-否，Y是
     */
    private String antisepticType;

    /**
     * 招采标志N-否，Y-是
     */
    private String isPurchase;

    /**
     * 存储方式
     */
    private String storageWay;

    /**
     * 机构id
     */
//    @NotBlank(message = "机构id不能为空", groups = {AddGroup.class, EditGroup.class})
    private String orgId;

    /**
     * 备注信息
     */
    private String remarks;

    /**
     * 备用1
     */
    private String remarks1;

    /**
     * 备用2
     */
    private String remarks2;

    /**
     * 备用3
     */
    private String remarks3;

    /**
     * 备用4
     */
    private String remarks4;

    /**
     * 是否审核 N：未审核 Y：已审核
     */
    private String auditState;

    /**
     * 国家医保名称
     */
    private String countryYbName;

    /**
     * 国家医保编码
     */
    private String countryYbCode;

    /**
     * 父级id
     */
    private String parentId;

    /**
     * $column.columnComment
     */
    private String platformDrugInfo;

    /**
     * 是否高危
     */
    private String highRisk;

    /**
     * 自费或医保 0.自费 1.医保
     */
    private String zfOrYb;

    private List<DrugPriceBo> drugPriceList;

}
